package pe.com.csi.pm.regexiv.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import pe.com.csi.pm.regexiv.bean.Concesion;

import pe.com.csi.pm.regexiv.db.DaoManager;
import pe.com.csi.pm.regexiv.interfaces.ConcesionDAO;

public class ConcesionDAOImpl implements ConcesionDAO {

	private Context context;

	public ConcesionDAOImpl(Context context) {
		this.context = context;
	}

	@Override
	public int registrarConcesion(Concesion concesion) {
		System.out.println("entro daoimpl registrar");
		int rows = 0;
		DaoManager usdbh = new DaoManager(context);
		SQLiteDatabase db = usdbh.getWritableDatabase();
		try {

			db.beginTransaction();
			ContentValues valores = new ContentValues();
			valores.put("IDCCES", concesion.getIdCces());
			valores.put("NOMBRECCES", concesion.getNombreCces());
			valores.put("ESTADOCCES", concesion.getEstadoCces());
			valores.put("FECHAINICCES", concesion.getFechaIniCces());
			valores.put("FECHAFINCCES", concesion.getFechaFinCces());
			valores.put("FECHAALTCCES", concesion.getFechaAltCces());
			valores.put("DIRECCIONCCES", concesion.getDireccionCces());
			valores.put("TELEFONOCCES", concesion.getTelefonoCces());
			valores.put("PERSONALCONTCCES", concesion.getPersonaContCces());
			valores.put("IDCCESO", concesion.getIdCceso());
			valores.put("IDFCUENE", concesion.getIdFcuene());
			valores.put("IDUSUA", concesion.getIdUsua());

			long pos = db.insert("CONCESION", null, valores);
			System.out.println("REGISTRADO CONCESION " + pos);
			if (pos == -1)
				rows = 0;
			else
				rows = 1;
			db.setTransactionSuccessful();
		} catch (SQLException e) {
			rows = 0;
			e.printStackTrace();
		} finally {
			db.endTransaction();
			db.close();
		}

		return rows;
	}

	@Override
	public List<Concesion> obtenerConcesiones() {
		List<Concesion> lstconcesiones = new ArrayList<Concesion>();
		try {
			String sql = "SELECT IDCCES, NOMBRECCES, ESTADOCCES, FECHAINICCES, FECHAFINCCES, FECHAALTCCES, DIRECCIONCCES, TELEFONOCCES, PERSONALCONTCCES, IDCCESO, IDFCUENE, IDUSUA FROM CONCESION";
			System.out.println("entro a obtener obtenerConcesiones");
			DaoManager usdbh = new DaoManager(context);

			SQLiteDatabase db = usdbh.getReadableDatabase();
			System.out.println("db :" + db);
			Cursor c = db.rawQuery(sql, null);
			Concesion concesion;
			if (c.moveToFirst()) {
				do {
					Long idCces = !c.isNull(0) ? c.getLong(0) : null;
					String nombreCces = !c.isNull(1) ? c.getString(1) : "";
					Long estadoCces = !c.isNull(2) ? c.getLong(2) : null;
					String fechaIniCces = !c.isNull(3) ? c.getString(3) : "";
					String fechaFinCces = !c.isNull(4) ? c.getString(4) : "";
					String fechaAltCces = !c.isNull(5) ? c.getString(5) : "";
					String direccionCces = !c.isNull(6) ? c.getString(6) : "";
					String telefonoCces = !c.isNull(7) ? c.getString(7) : "";
					String personaContCces = !c.isNull(8) ? c.getString(8) : "";
					Long idCceso = !c.isNull(9) ? c.getLong(9) : null;
					Long idFcuene = !c.isNull(10) ? c.getLong(10) : null;
					Long idUsua = !c.isNull(11) ? c.getLong(11) : null;

					concesion = new Concesion();
					concesion.setIdCces(idCces);
					concesion.setNombreCces(nombreCces);
					concesion.setEstadoCces(estadoCces);
					concesion.setFechaIniCces(fechaIniCces);
					concesion.setFechaFinCces(fechaFinCces);
					concesion.setFechaAltCces(fechaAltCces);
					concesion.setDireccionCces(direccionCces);
					concesion.setTelefonoCces(telefonoCces);
					concesion.setPersonaContCces(personaContCces);
					concesion.setIdCceso(idCceso);
					concesion.setIdFcuene(idFcuene);
					concesion.setIdUsua(idUsua);
					concesion.setEtiqueta(nombreCces);

					lstconcesiones.add(concesion);

				} while (c.moveToNext());
			}
			c.close();
			db.close();
		} catch (Exception e) {
			lstconcesiones = new ArrayList<Concesion>();
			e.printStackTrace();
		}
		return lstconcesiones;

	}

	@Override
	public int eliminarAllConcesiones() {
		int rows = 0;
		DaoManager usdbh = new DaoManager(context);
		SQLiteDatabase db = usdbh.getWritableDatabase();
		try {
			db.beginTransaction();
			db.execSQL("DELETE FROM CONCESION");
			rows = 1;
			db.setTransactionSuccessful();
		} catch (Exception e) {
			rows = -1;
			e.printStackTrace();
		} finally {
			db.endTransaction();
			db.close();
		}
		return rows;
	}

}
